home *** CD-ROM | disk | FTP | other *** search
/ CD ROM Paradise Collection 4 / CD ROM Paradise Collection 4 1995 Nov.iso / program / swagg_m.zip / GRAPHICS.SWG / 0130_GRAPHICS ROUTINES.pas < prev    next >
Pascal/Delphi Source File  |  1994-08-24  |  1KB  |  89 lines

  1. {here are some assembler routines for the 320x200x256 mode.}
  2.  
  3. uses
  4.  crt;
  5.  
  6. PROCEDURE InitVGA; ASSEMBLER;
  7. asm
  8.    mov  ax, 13h
  9.    int  10h
  10. end;
  11.  
  12. PROCEDURE InitTEXT; ASSEMBLER;
  13. asm
  14.    mov  ax, 03h
  15.    int  10h
  16. end;
  17.  
  18. PROCEDURE PlotPixel1(X, Y: Word; Color: Byte); ASSEMBLER;
  19. asm
  20.    push es
  21.    push di
  22.    mov  ax, Y
  23.    mov  bx, ax
  24.    shl  ax, 8
  25.    shl  bx, 6
  26.    add  ax, bx
  27.    add  ax, X
  28.    mov  di, ax
  29.    mov  ax, $A000
  30.    mov  es, ax
  31.    mov  al, Color
  32.    mov  es:[di], al
  33.    pop  di
  34.    pop  es
  35. end;
  36.  
  37. PROCEDURE PlotPixel2(X, Y : word; Color : byte);
  38. begin
  39.  if (X<320) then if (Y<200) then mem[$A000: Y*320+X] := color;
  40. end;
  41.  
  42.  
  43. PROCEDURE SetColor (ColorNo, Red, Green, Blue : byte);
  44. begin
  45.      PORT[$3C8] := ColorNo;
  46.      PORT[$3C9] := Red;
  47.      PORT[$3C9] := Green;
  48.      PORT[$3C9] := Blue;
  49. end;
  50.  
  51.  
  52. var
  53.  LoopX : word;
  54.  LoopY, R, G, B, i : byte;
  55.  Ky : char;
  56.  
  57. Begin
  58.  Randomize;
  59.  InitVGA;
  60.  for LoopY := 0 to 199 do
  61.  begin
  62.   for LoopX := 0 to 319 do
  63.    PlotPixel1(LoopX, LoopY, random(255)+1);
  64.  end;
  65.  B := 0;
  66.  repeat
  67.   G := random(63);
  68.   for R := 0 to 63 do
  69.   begin
  70.    Setcolor(random(255)+1, R, G, B);
  71.    inc(G, 1);
  72.    if G=64 then G := 0;
  73.   end;
  74.   for G := 63 downto 0 do
  75.   R := random(63);
  76.   begin
  77.    Setcolor(random(255)+1, R, G, B);
  78.    dec(R, 1);
  79.    if R=0 then R := 63;
  80.   end;
  81.   inc(B, random(10)-5);
  82.   if B>63 then B := random(63);
  83.  until keypressed;
  84.  Ky := readkey;
  85.  InitTEXT;
  86. end.
  87.  
  88.  
  89.